home *** CD-ROM | disk | FTP | other *** search
- /* save "kasi.bas"
- /* save@"kasi.bas
- /************************************
- /* Z-MUSICのワークを見る *
- /* 歌詞を見ながら聞く *
- /************************************
- /* *******************************
- /* * ファイル名を指定しています *
- /* * ここを書き換えて下さい *
- /* * ↓ **********************
- str filname = "yumes" /* !拡張子は付けないで
- /*
- dim char cr(1) = {&HA} /*改行マーク
- /* X-BASICだと再生時に問題発生!
- /* ぺけーBASIC=XB の使用を推奨
- /* X-BASICで書き込んだデータを
- /* X-BASICで再生する時は
- /* EDか何かでセーブし直す必要有り
- /*----------------------------------------
- int x,y,lb,rb /*マウス
- int mihari,a,b,c,d /*見張る
- int count /*カウント
- str lkasi[62] /*歌詞のアクセス
- dim str kasi(32)[62] /*歌詞
- str clkasi[6] /*データアクセス
- dim str kasicount(32)[6] /*データ
- int retu /*作成データ行
- int lbbuf /*左ボタン押しっぱなし対策
- int kasiretu /*次に表示する行
- int pointretu /*表示する行
- int fnum /*ファイル番号
- char hensyu = 0 /*データ作成中フラグ
- cls
- width 96
- mouse(4)
- kasiload()
- dataload()
- /* =========メイン========================
- m_play()
- count = 0
- repeat
- locate 0,0
- a = zm_work(1,7) /*これが一体なんなのか
- b = zm_work(2,7) /*知らないのですが
- c = zm_work(3,7) /*取り敢えず使ってみたりして
- print using"#####";a;
- print using"#####";b;
- print using"#####";c;
- /*****************************************
- /*左からa/b/cの順に表示されるので *
- /*ここをa/b/cのいずれかに書き換える *
- /* ↓ ************************************
- d = c
- /*---データを見張る
- /* 変化が有ればカウント
- if mihari <> d then count = count +1
- mihari = d
- print using"#####";count
- /*---データが空でなければ
- if hensyu = 0 then{
- if kasicount(pointretu) <> "" then{
- kasiretu = atoi(kasicount(pointretu))
- /*---カウントとデータが一致
- if count = kasiretu then {
- locate 6,pointretu+1
- color 1
- print kasi(pointretu)
- color 3
- pointretu = pointretu + 1
- }
- }
- }
- /*
- msstat(x,y,lb,rb)
- /*---(カウント)データ作成
- makecount()
- /*---演奏終了でループ抜ける
- if m_stat() = 0 then break
- /*---右ボタンでループ解除
- until rb = -1
- m_stop()
- msbtn(0,0,1)
- msbtn(0,1,1)
- /*-------データ書き込み選択---------------
- if hensyu = 1 then {
- writedata()
- }
- /*----------------------------------------
- mouse(0)
- cls
- end
- /*=======================================
- /*--------データ作成---------------------
- func makecount()
- /*---左ボタンが一旦放された後、再び押されたら
- if lbbuf = 0 then{
- if lb = -1 then {
- /*---一色を替えてデータ表示
- locate 0,retu+1
- color 2
- print using"#####";count;
- print " ";kasi(retu)
- locate 30,0
- print"データ作成中 次の行[左] 中止[右]"
- color 3
- kasicount(retu) = str$(count)
- retu = retu + 1
- lbbuf = 1
- hensyu = 1
- }
- }else{
- if lb = 0 then lbbuf = 0
- }
- endfunc
- /* --------歌詞読み込み------------------------
- func kasiload()
- error off
- fnum = fopen(filname + ".doc","r")
- locate 0,1
- repeat
- a = freads(lkasi,fnum)
- kasi(count) = lkasi
- count = count + 1
- print " ";lkasi
- until a = -1
- fclose(fnum)
- error on
- endfunc
- /* --------データ読み込み----------------------
- func dataload()
- locate 30,0
- count = 0
- error off
- fnum = fopen(filname + ".kas","r")
- if fnum = -1 then {
- print "データ無し 作成=[左] 中止=[右]"
- }else{
- print "データ有り 作成=[左] 中止=[右]"
- repeat
- a = freads(clkasi,fnum)
- kasicount(count) = clkasi
- print kasicount(count)
- count = count + 1
- until a = -1
- }
- error on
- endfunc
- /* -------データ書き込み-----------------------
- func writedata()
- locate 30,0
- print"書き込みますか? Y=[左] N=[右]"
- for a = 0 to retu - 1
- print using"#####";(atoi(kasicount(a)));
- print " ";kasi(a)
- next
- /*---選択されるまで待つ
- repeat
- msstat(x,y,lb,rb)
- until lb + rb <> 0
- /*---左ボタンが押されたら
- if lb = -1 then{
- fnum = fopen(filname + ".kas","c")
- for a = 0 to retu - 1
- clkasi = kasicount(a)
- fwrites(clkasi,fnum)
- /*------------------
- /*X-BASICだとうまく書き込めない
- fwrite(cr,1,fnum)
- next
- fclose(fnum)
- }
- endfunc